﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLLTZS.Funcionalidad;

namespace TZS
{
    public partial class Default : FormGenerico
    {
        #region Inicializacion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
                GuardarFiltros();
            else
            {
                CargarAmbitos();
                CargarOfertas();
            }

            //throw new Exception("PIJA");
        }

        #endregion

        #region Filtros

        private void CargarAmbitos()
        {
            cblAmbitos.Items.Clear();
            
            string[] nombres = Enum.GetNames(typeof(Ambitos));

            for (int i = 0; i < nombres.Count(); i++)
                cblAmbitos.Items.Add(new ListItem() {  Text = nombres[i], Value = (i+1).ToString()});

            foreach (ListItem item in cblAmbitos.Items)
                item.Selected = AmbitosSeleccionados.Contains((Ambitos)int.Parse(item.Value));
        }

        private void GuardarFiltros()
        {
            List<int> idsLocalidades = new List<int>();
            List<Ambitos> ambitos = new List<Ambitos>();
            List<int> idsTiposPuesto = new List<int>();
            LeerFiltros(idsLocalidades, ambitos, idsTiposPuesto);

            LocalidadesSeleccionadas = idsLocalidades;
            AmbitosSeleccionados = ambitos;
            PuestosSeleccionados = idsTiposPuesto;
        }

        protected void cblLocalidades_DataBound(object sender, EventArgs e)
        {
            foreach (ListItem item in cblLocalidades.Items)
                item.Selected = LocalidadesSeleccionadas.Contains(int.Parse(item.Value));
        }

        protected void cblPuestos_DataBound(object sender, EventArgs e)
        {
            foreach (ListItem item in cblPuestos.Items)
                item.Selected = PuestosSeleccionados.Contains(int.Parse(item.Value));
        }

        #endregion

        #region Ofertas

        private void LeerFiltros(List<int> idsLocalidades, List<Ambitos> ambitos, List<int> idsTiposPuesto)
        {
            foreach (ListItem item in cblLocalidades.Items)
                if (item.Selected)
                    idsLocalidades.Add(int.Parse(item.Value));

            foreach (ListItem item in cblAmbitos.Items)
                if (item.Selected)
                    ambitos.Add((Ambitos)int.Parse(item.Value));

            foreach (ListItem item in cblPuestos.Items)
                if (item.Selected)
                    idsTiposPuesto.Add(int.Parse(item.Value));
        }

        private void CargarOfertas()
        {
            gvOfertas.DataSource = new BLLOferta().TraerOfertas(LocalidadesSeleccionadas, AmbitosSeleccionados, PuestosSeleccionados);
            gvOfertas.DataBind();
        }


        protected void gvOfertas_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvOfertas.PageIndex = e.NewPageIndex;
            CargarOfertas();
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            CargarOfertas();
        }

        #endregion

        
    }
}